Python のバージョン管理に asdf を導入してみた
はじめに
おばんです!データアナリティクス事業本部ビジネスソリューション部の大谷(おおや)です。
新卒研修を終え、ビジネスソリューション部に JOIN してから Python のバージョン管理ツールを asdf に変更したのでその導入方法と各種設定についてまとめてみました。
asdf とは
Python などの各種プログラミング言語の実行環境は、プロジェクト内では安定バージョンを、検証には最新バージョンを使用したいなど、プロジェクトや状況によって使用したバージョンが異なります。
その際に、必要なのが asdf を始めとしたランタイムバージョン管理ツールです。
asdf では、 Python や Node.js を始めとした様々なツールのバージョン管理に対応していることが魅力のひとつです!
今では私も多くのツールのバージョン管理を asdf ひとつで行なっています。
対応しているツールについて興味がある方は公式ドキュメントの Plugins ページを確認してみてください。
環境
- OS: macOS v13.6(Apple M2)
- シェル: GNU Bash v5.2.15
- Homebrew: v4.1.17
asdf の導入方法
依存パッケージのインストール
asdf が依存している各パッケージを Homebrew を使用してインストールします。
brew install coreutils curl git
asdf のインストール
asdf 自体のインストール方法はいくつかあります。
私はパッケージを一括管理したいため、 Homebrew を使用してインストールしました。
brew install asdf
※ 公式ドキュメントではgit
コマンドを使用してインストールすることを強くおすすめしているため、各自で取捨選択するようにしてください。
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.13.1
パスを通す
asdf
コマンドを使用できるようにするために、下記公式ドキュメントを参考にパスを通します。
私の場合は Bash + Homebrew のため、下記コマンドを実行しました。
echo -e "\n. \"$(brew --prefix asdf)/libexec/asdf.sh\"" >> ~/.bash_profile
また、asdf
コマンドの補完が効くように、下記コマンドを実行しておきます
echo -e "\n. \"$(brew --prefix asdf)/etc/bash_completion.d/asdf.bash\"" >> ~/.bash_profile
Python プラグイン
Python プラグインのインストール
まずは、 Python のプラグインとリポジトリを確認します
asdf plugin list all | grep python (出力結果) python *https://github.com/danhper/asdf-python.git
続いて、出力結果をもとに、リポジトリを確認して、プラグインをインストールするために必要な依存関係などを確認します。
Python のプラグインに関しては必要な依存関係はないようです。
それでは、下記コマンドを実行して、プラグインをインストールします。
asdf plugin add python https://github.com/danhper/asdf-python.git
最後に実行が完了したら、プラグインがインストールできたか確認します。
asdf plugin list (出力結果) python
バージョン管理
インストール可能なバージョン一覧を確認
下記コマンドを実行することで、インストールしたいバージョンに対応しているかどうか一覧を表示します。
asdf list all python
上記コマンドのみの場合、あまりにも多くのバージョンが出力されるため、 私はよく、| grep ^3\.9\.*
などを付与して確認したい部分だけ表示するようにしています。
また、安定バージョンのみを確認したい場合は、下記コマンドで確認することができます。
asdf latest python <version> # 例1) asdf latest python # 例2) asdf latest python 3.9
バージョンのインストール
下記コマンドを実行することで、各種バージョンをインストールすることができます。
asdf install python <version> # 例) asdf install python 3.9.18
また、安定バージョンをインストールしたい場合は、下記コマンドで確認することができます。
asdf install python latest # または asdf install python latest:<version>
使用するバージョンを設定
下記コマンドを実行することで、使用するglobal
バージョンを設定することができます。
バージョン情報は、$HOME/.tool-versions
に書き込まれます。
asdf global python <version>
下記コマンドを実行することで、実行したディレクトリ内で使用したいlacal
バージョンを設定することができます。
バージョン情報は、$PWD/.tool-versions
に書き込まれます。
asdf local python <version>
インストール済みバージョンの一覧
下記コマンドを実行することで、インストール済みのバージョン一覧を表示します。
asdf list python
不要なバージョンのアンインストール
下記コマンドを実行することで、使用するバージョンをアンインストールすることができます。
asdf uninstall python <version>
デフォルトパッケージ
どの Python バージョンでも使用する(常にインストール)する Python の外部ライブラリがあれば、$HOME/.default-python-packages
を作成して、下記のように記述することでバージョンのインストール後に自動でpip install
してくれます。
awsume boto3 cfn-lint fsspec s3fs pyyaml requests
※ 一部ライブラリに関しては、自動インストール時にエラーが発生する場合があります。その場合はデフォルトパッケージから外して、手動でのインストール等を検討してください。
おわりに
ランタイムバージョン管理ツールは、たくさんあります。
その中でも本日は、 asdf に焦点を当て、 Python のバージョン管理についてまとめました。
asdf の真価は、 Python のみならず複数のツールのバージョンを管理することで発揮されると思うので、ぜひ他のツールのバージョン管理にも使用してみてください!